home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / assembler / progasm1.lha / SORGENTI / LEZIONE2b.S < prev    next >
Text File  |  1995-04-19  |  3KB  |  66 lines

  1.  
  2. ; Lezione2b.s
  3.  
  4. Inizio:
  5.     MOVE.L    CANE,GATTO
  6.     rts
  7.  
  8. CANE:
  9.     dc.l    $123456
  10.  
  11. GATTO:
  12.     dc.l    0
  13.  
  14.     END
  15.  
  16. Con questo esempio si puo' verificare che una volta assemblato il sorgente
  17. al posto delle label viene assemblato l'indirizzo effettivo di CANE e GATTO:
  18. Assemblate con A, dopodiche' fate "D Inizio" e noterete la sostituzione con
  19. gli indirizzi. Dopo l'rts noterete un paio ORI.B e altre istruzioni: in
  20. realta' queste sono un tentativo di interpretazione delle 2 longword CANE e
  21. GATTO, infatti dopo il $4e75 dell'rts, noterete il $00123456, ossia la prima
  22. longword denominata da noi CANE, e $00000000, ossia GATTO.
  23. Ora eseguitelo con J, dopodiche' fate un M GATTO, e vi apparira' 00 12 34 56
  24. infatti la longword contenuta in CANE e' stata copiata in GATTO:
  25. Ora modificate la prima linea in MOVE.L #CANE,GATTO, assemblate e fate
  26. "D inizio" ... constaterete che anche questa volta sono state sostituite
  27. le label col loro indirizzo reale, infatti l'unica differenza con la prima
  28. prova e' l'aggiunta del cancelletto (#). Ma questo cambia tutto come dal giorno
  29. alla notte!!!!!!! Infatti questa volta se eseguite col J e fate M GATTO
  30. verificherete che c'e' l'indirizzo di CANE! ossia, se l'istruzione fosse stata
  31. assemblata come MOVE.L #$34200,$34204 , dopo l'esecuzione sarebbe stato
  32. inserito in $34204 (cioe' GATTO) il numero FISSO dopo il cancelletto (#),
  33. ossia l'indirizzo di CANE, ossia $34200.
  34. Riassunto finale:
  35.  
  36.     MOVE.b    $10,$200    ; copia il valore .b contenuto nell'indirizzo
  37.                 ; $10 nell'indirizzo $200
  38.  
  39.     MOVE.b    #$10,$200    ; mette il numero $10 nella locazione $200
  40.     MOVE.B    #16,$200    ; come sopra, infatti $10 = 16!!!
  41.     MOVE.B    #%10000,$200    ; come sopra, infatti %10000 = 16!!!
  42.  
  43. NOTA: ASMONE alloca, ossia posiziona il programma ogni volta in un indirizzo
  44. diverso, lo stesso fa il sistema operativo quando caricate un programma, a
  45. seconda di dove avete memoria libera. Questo sistema e' uno dei punti di
  46. forza del sistema multitasking AMIGA. Quando salvate il file eseguibile con WO
  47. salvate il file nel formato AMIGADOS, che poi il sistema operativo mettera'
  48. in memoria dove meglio credera'. Per questo scrivo "se fosse a $34200....":
  49. perche' puo' essere assemblato a qualsiasi indirizzo.
  50. Provate a caricare programmi in multitasking prima dell'asmone e noterete meno
  51. memoria allocabile alla selezione iniziale (ALLOCATE Chip, fast...) e che
  52. facendo D Inizio la locazione e' piu' alta, infatti la memoria sottostante
  53. e' gia occupata. Programmare ad indirizzi FISSI, ossia specificando sempre
  54. l'indirizzo anziche' la label non va fatto per giochi o demo in cui si
  55. puo' uscire ritornando al workbench, perche' se ad esempio si definisce
  56. lo schermo del gioco a $70000 e a quella locazione e' gia presente un
  57. programma caricato prima, all'uscita otterremo un bel GURU MEDITATION, detto
  58. COMA... se non volete far andare l'Amiga in coma continuamente dunque
  59. programmate come questo corso insegna. Indirizzi fissi si possono, o alle
  60. volte si DEVONO usare se si fanno giochi o demo in AUTOBOOT, cioe' che
  61. partono non dal WB ma automaticamente e la cui directory non puo' essere
  62. vista (molti giochi sono cosi'). Prima di fare un gioco o una demo in
  63. autoboot credo sia meglio imparare almeno a visualizzare qualcosa sullo
  64. schermo pero', quindi ne parlero' piu' avanti.
  65.  
  66.